SpriteAtals 指南

  1. 马三小伙 如何设置 SpriteAtlas 和 AB
  2. 猫仙洞 如何修复 SBP 打包时,SpriteAtlas 会冗余的问题

都设置好后,如果需要动态加载图集中的子图,使用 YooAsset 填入子图的路径加载即可

Unity 设计 SpriteAtlas 的初衷是为了让开发者感觉不到图集的存在,但是开发者仍然需要掌握部分实际使用经验才能较好的使用

自动生成 SpriteAtals

- Textures
	- UIHomePage
		- xxx.png
- Atlas
	- UIHomepage.spriteatals

正常情况下,所有静态图集都应该存放在 Textures 文件夹下,而自动化工具,会检测 Textures 文件夹的变化,动态生成/删除图集文件,并对图集增加 Textures/UIHomePage 这个文件夹的引用

核心代码

public class SpriteAtalsAutomation : AssetPostprocessor
{
	static void OnPostprocessAllAssets(string[] importedAssets,  string[] deletedAssets,  string[] movedAssets,  string[] movedFromAssetPaths)
	{
		// 检查是否是指定的文件夹,是否要删除等等
		SpriteAtlas atlas = new();
		AssetDatabase.CreateAsset(atlas, "存放位置");
		atlas.SetPackingSettings(怎么 Pack);  
		atlas.SetTextureSettings(怎么压缩);  
		atlas.SetIncludeInBuild(是否 Include);

		if(atlas.GetPackables().Length == 0)  
		{  
			// 添加 `Textures/UIHomePage` 文件夹到图集的引用中
			atlas.Add(new[] {AssetDatabase.LoadAssetAtPath<UnityEngine.Object>(path)});  
		}

		AssetDatabase.SaveAssets();
	}
}

Editor 配置

可以参考下图的绘制方式,将自动化抽象成一条条配置,根据配置动态设置规则

在我们的项目中,我将图集的行为分为 3 类

类型 说明
静态图集 UI直接挂载的资源
动态小图集 代码动态加载,且图片都比较小
动态大图集 代码动态加载,但图片都比较大

基于上述原因,配置文件会有是否生成 SpriteAtlas 的开关,同时还会将原始的 png 文件设置当前平台的压缩格式,一次配置好后,就再也不需要关心图集这件事了

Pasted image 20230407180239.png